{
  "nbformat": 4,
  "nbformat_minor": 0,
  "metadata": {
    "colab": {
      "name": "Learning_rate.ipynb",
      "provenance": [],
      "collapsed_sections": [],
      "include_colab_link": true
    },
    "kernelspec": {
      "name": "python3",
      "display_name": "Python 3"
    }
  },
  "cells": [
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "view-in-github",
        "colab_type": "text"
      },
      "source": [
        "<a href=\"https://colab.research.google.com/github/PacktPublishing/Modern-Computer-Vision-with-PyTorch/blob/master/Chapter01/Learning_rate.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "0w-8b749EeF4",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "x = [[1],[2],[3],[4]]\n",
        "y = [[3],[6],[9],[12]]"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "TkdJPAuqEe3o",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "from copy import deepcopy\n",
        "import numpy as np\n",
        "def feed_forward(inputs, outputs, weights):\n",
        "    out = np.dot(inputs,weights[0])+ weights[1]\n",
        "    mean_squared_error = np.mean(np.square(out - outputs))\n",
        "    return mean_squared_error"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "QvV_SKS3Eg98",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "def update_weights(inputs, outputs, weights, lr):\n",
        "    original_weights = deepcopy(weights)\n",
        "    org_loss = feed_forward(inputs, outputs, original_weights)\n",
        "    updated_weights = deepcopy(weights)\n",
        "    for i, layer in enumerate(original_weights):\n",
        "        for index, weight in np.ndenumerate(layer):\n",
        "            temp_weights = deepcopy(weights)\n",
        "            temp_weights[i][index] += 0.0001\n",
        "            _loss_plus = feed_forward(inputs, outputs, temp_weights)\n",
        "            grad = (_loss_plus - org_loss)/(0.0001)\n",
        "            updated_weights[i][index] -= grad*lr\n",
        "    return updated_weights"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "ca1g0frrEizm",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "W = [np.array([[0]], dtype=np.float32), np.array([[0]], dtype=np.float32)]"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "nR0QCz_7Ekbx",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "weight_value = []\n",
        "for epx in range(1000):\n",
        "    W = update_weights(x,y,W,0.01)\n",
        "    weight_value.append(W[0][0][0])\n"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "056x8N01EngD",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 312
        },
        "outputId": "27c5128a-c8f2-4a97-c9b1-bb08854d660a"
      },
      "source": [
        "import matplotlib.pyplot as plt\n",
        "%matplotlib inline\n",
        "plt.plot(weight_value)\n",
        "plt.title('Weight value over increasing epochs')\n",
        "plt.xlabel('Epochs')\n",
        "plt.ylabel('Weight value')"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "Text(0, 0.5, 'Weight value')"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 6
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": [],
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "ynL-lHkiEn6u",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 312
        },
        "outputId": "0fb3f07e-b202-439a-fb8c-29d9c3f302ff"
      },
      "source": [
        "W = [np.array([[0]], dtype=np.float32), np.array([[0]], dtype=np.float32)]\n",
        "weight_value = []\n",
        "for epx in range(1000):\n",
        "    W = update_weights(x,y,W,0.1)\n",
        "    weight_value.append(W[0][0][0])\n",
        "import matplotlib.pyplot as plt\n",
        "%matplotlib inline\n",
        "plt.plot(weight_value)\n",
        "plt.title('Weight value over increasing epochs with learning rate of 0.1')\n",
        "plt.xlabel('Epochs')\n",
        "plt.ylabel('Weight value')"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "Text(0, 0.5, 'Weight value')"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 8
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": [],
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "lvJLj7xNEr9q",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        ""
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "dkv3Qm-JEsAZ",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 312
        },
        "outputId": "c35f1b1c-c70d-4b02-b54b-5a6bd2b5043b"
      },
      "source": [
        "W = [np.array([[0]], dtype=np.float32), np.array([[0]], dtype=np.float32)]\n",
        "weight_value = []\n",
        "for epx in range(1000):\n",
        "    W = update_weights(x,y,W,1)\n",
        "    weight_value.append(W[0][0][0])\n",
        "import matplotlib.pyplot as plt\n",
        "%matplotlib inline\n",
        "plt.plot(weight_value)\n",
        "plt.title('Weight value over increasing epochs with learning rate of 1')\n",
        "plt.xlabel('Epochs')\n",
        "plt.ylabel('Weight value')"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "Text(0, 0.5, 'Weight value')"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 9
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": [],
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "wndidxTwE4DF",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        ""
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "dl1yS2wfE4Fo",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        ""
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "VcevM3y7EsDq",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "def update_weights(inputs, outputs, weights, lr):\n",
        "    original_weights = deepcopy(weights)\n",
        "    org_loss = feed_forward(inputs, outputs, original_weights)\n",
        "    updated_weights = deepcopy(weights)\n",
        "    for i, layer in enumerate(original_weights):\n",
        "        for index, weight in np.ndenumerate(layer):\n",
        "            temp_weights = deepcopy(weights)\n",
        "            temp_weights[i][index] += 0.0001\n",
        "            _loss_plus = feed_forward(inputs, outputs, temp_weights)\n",
        "            grad = (_loss_plus - org_loss)/(0.0001)\n",
        "            updated_weights[i][index] -= grad*lr\n",
        "            if(i % 2 == 0):\n",
        "                print('weight value:', np.round(original_weights[i][index],2), \n",
        "                      'original loss:', np.round(org_loss,2), \n",
        "                      'loss_plus:', np.round(_loss_plus,2), \n",
        "                      'gradient:', np.round(grad,2), \n",
        "                      'updated_weights:', np.round(updated_weights[i][index],2))\n",
        "    return updated_weights"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "xkNksaKxE42f",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 499
        },
        "outputId": "c922e251-0b59-4263-c8f8-79002688c002"
      },
      "source": [
        "W = [np.array([[0]], dtype=np.float32), np.array([[0]], dtype=np.float32)]\n",
        "weight_value = []\n",
        "for epx in range(10):\n",
        "    W = update_weights(x,y,W,0.01)\n",
        "    weight_value.append(W[0][0][0])\n",
        "print(W)\n",
        "import matplotlib.pyplot as plt\n",
        "%matplotlib inline\n",
        "plt.plot(weight_value[:100])\n",
        "plt.title('Weight value over increasing epochs when learning rate is 0.01')\n",
        "plt.xlabel('Epochs')\n",
        "plt.ylabel('Weight value')"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "weight value: 0.0 original loss: 67.5 loss_plus: 67.5 gradient: -45.0 updated_weights: 0.45\n",
            "weight value: 0.45 original loss: 46.88 loss_plus: 46.88 gradient: -37.49 updated_weights: 0.82\n",
            "weight value: 0.82 original loss: 32.57 loss_plus: 32.57 gradient: -31.26 updated_weights: 1.14\n",
            "weight value: 1.14 original loss: 22.64 loss_plus: 22.64 gradient: -26.05 updated_weights: 1.4\n",
            "weight value: 1.4 original loss: 15.75 loss_plus: 15.75 gradient: -21.72 updated_weights: 1.62\n",
            "weight value: 1.62 original loss: 10.97 loss_plus: 10.97 gradient: -18.1 updated_weights: 1.8\n",
            "weight value: 1.8 original loss: 7.65 loss_plus: 7.65 gradient: -15.09 updated_weights: 1.95\n",
            "weight value: 1.95 original loss: 5.35 loss_plus: 5.35 gradient: -12.59 updated_weights: 2.07\n",
            "weight value: 2.07 original loss: 3.75 loss_plus: 3.75 gradient: -10.49 updated_weights: 2.18\n",
            "weight value: 2.18 original loss: 2.64 loss_plus: 2.64 gradient: -8.75 updated_weights: 2.27\n",
            "[array([[2.265477]], dtype=float32), array([[0.7404298]], dtype=float32)]\n"
          ],
          "name": "stdout"
        },
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "Text(0, 0.5, 'Weight value')"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 11
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": [],
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "pRGvkqXfE7qQ",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        ""
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "mW6DSH8lFB__",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 499
        },
        "outputId": "c1b0a228-8ee8-49ba-bf73-b68087373fac"
      },
      "source": [
        "W = [np.array([[0]], dtype=np.float32), np.array([[0]], dtype=np.float32)]\n",
        "weight_value = []\n",
        "for epx in range(10):\n",
        "    W = update_weights(x,y,W,0.1)\n",
        "    weight_value.append(W[0][0][0])\n",
        "print(W)\n",
        "import matplotlib.pyplot as plt\n",
        "%matplotlib inline\n",
        "plt.plot(weight_value[:100])\n",
        "plt.title('Weight value over increasing epochs when learning rate is 0.1')\n",
        "plt.xlabel('Epochs')\n",
        "plt.ylabel('Weight value')"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "weight value: 0.0 original loss: 67.5 loss_plus: 67.5 gradient: -45.0 updated_weights: 4.5\n",
            "weight value: 4.5 original loss: 30.37 loss_plus: 30.38 gradient: 30.04 updated_weights: 1.5\n",
            "weight value: 1.5 original loss: 13.79 loss_plus: 13.78 gradient: -20.31 updated_weights: 3.53\n",
            "weight value: 3.53 original loss: 6.25 loss_plus: 6.26 gradient: 13.46 updated_weights: 2.18\n",
            "weight value: 2.18 original loss: 2.85 loss_plus: 2.85 gradient: -9.14 updated_weights: 3.1\n",
            "weight value: 3.1 original loss: 1.33 loss_plus: 1.33 gradient: 5.97 updated_weights: 2.5\n",
            "weight value: 2.5 original loss: 0.65 loss_plus: 0.65 gradient: -4.12 updated_weights: 2.91\n",
            "weight value: 2.91 original loss: 0.34 loss_plus: 0.34 gradient: 2.63 updated_weights: 2.65\n",
            "weight value: 2.65 original loss: 0.2 loss_plus: 0.2 gradient: -1.88 updated_weights: 2.84\n",
            "weight value: 2.84 original loss: 0.13 loss_plus: 0.13 gradient: 1.14 updated_weights: 2.72\n",
            "[array([[2.7217765]], dtype=float32), array([[0.6589097]], dtype=float32)]\n"
          ],
          "name": "stdout"
        },
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "Text(0, 0.5, 'Weight value')"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 12
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": [],
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "KfPSrkGCFDlg",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        ""
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "cFfeONvlFERA",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 499
        },
        "outputId": "83639333-e51d-4bfc-886b-a0c34b42bf7c"
      },
      "source": [
        "W = [np.array([[0]], dtype=np.float32), np.array([[0]], dtype=np.float32)]\n",
        "weight_value = []\n",
        "for epx in range(10):\n",
        "    W = update_weights(x,y,W,1)\n",
        "    weight_value.append(W[0][0][0])\n",
        "print(W)\n",
        "import matplotlib.pyplot as plt\n",
        "%matplotlib inline\n",
        "plt.plot(weight_value[:100])\n",
        "plt.title('Weight value over increasing epochs when learning rate is 1')\n",
        "plt.xlabel('Epochs')\n",
        "plt.ylabel('Weight value')"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "weight value: 0.0 original loss: 67.5 loss_plus: 67.5 gradient: -45.0 updated_weights: 45.0\n",
            "weight value: 45.0 original loss: 16604.45 loss_plus: 16604.52 gradient: 699.22 updated_weights: -654.22\n",
            "weight value: -654.22 original loss: 4030779.1 loss_plus: 4030777.76 gradient: -13409.38 updated_weights: 12755.16\n",
            "weight value: 12755.16 original loss: 1473935827.59 loss_plus: 1473935827.59 gradient: 0.0 updated_weights: 12755.16\n",
            "weight value: 12755.16 original loss: 1473935827.59 loss_plus: 1473935827.59 gradient: 0.0 updated_weights: 12755.16\n",
            "weight value: 12755.16 original loss: 1473935827.59 loss_plus: 1473935827.59 gradient: 0.0 updated_weights: 12755.16\n",
            "weight value: 12755.16 original loss: 1473935827.59 loss_plus: 1473935827.59 gradient: 0.0 updated_weights: 12755.16\n",
            "weight value: 12755.16 original loss: 1473935827.59 loss_plus: 1473935827.59 gradient: 0.0 updated_weights: 12755.16\n",
            "weight value: 12755.16 original loss: 1473935827.59 loss_plus: 1473935827.59 gradient: 0.0 updated_weights: 12755.16\n",
            "weight value: 12755.16 original loss: 1473935827.59 loss_plus: 1473935827.59 gradient: 0.0 updated_weights: 12755.16\n",
            "[array([[12755.16]], dtype=float32), array([[3765.9717]], dtype=float32)]\n"
          ],
          "name": "stdout"
        },
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "Text(0, 0.5, 'Weight value')"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 13
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": [],
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "3YI32P69FGEt",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        ""
      ],
      "execution_count": null,
      "outputs": []
    }
  ]
}